/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package sie_invdis;


import java.io.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;
import java.awt.print.PageFormat;
import java.text.*;
/**
 *
 * @author Michelle
 */
public class laser_entradas_imprimir {

    private Font fuente = new Font("Dialog", Font.PLAIN, 10);
	private PrintJob pj;
	private Graphics pagina;
    private Vector cadenas_a_imprimir;
    private JTextArea Objeto_textarea;
    private JTable Objeto_tabla;
     public laser_entradas_imprimir()
	{
		this.cadenas_a_imprimir=new Vector(1);
	}
     public void imprimir_all(int opcion,int pag)
    {
        //LO COLOCO EN UN try/catch PORQUE PUEDEN CANCELAR LA IMPRESION
        this.pj = Toolkit.getDefaultToolkit().getPrintJob(new Frame(), "Imprimir Ticket", null);
        float dif=0,costopieza=0;
        DecimalFormat miformat = new DecimalFormat("###,###,###,###.##");
        //this.pj = Toolkit.getDefaultToolkit().getPrintJob(null, "Imprimir Ticket", null);
    	try
    		{
        		pagina = pj.getGraphics();

                pagina.setFont(fuente);
        		pagina.setColor(Color.black);
                int indice_arreglo=0,filas_impresion=0,ni=0,filas_dif=0,nip=0,nif=0;
                int nobjetotabla=this.getObjeto_tabla().getRowCount();
                int nobjetocadenas=this.cadenas_a_imprimir.size();
                String s="";
                if(pagina!=null)
                {
                    System.out.println("Numero de filas para imprimir: "+nobjetotabla);
                /*Impresion de encabezado*/
                    for(indice_arreglo=0;indice_arreglo<nobjetocadenas &&
                        !(this.cadenas_a_imprimir.get(indice_arreglo)+"").equals("*")
                        ;indice_arreglo++,filas_impresion++)
                    {
                    pagina.drawString(this.cadenas_a_imprimir.get(filas_impresion)+"",0,50+(filas_impresion*10));
                }
                filas_impresion+=2;
                /**/
                //mando imprimir recepcion normal
                if (opcion==1)
                 {
                        pagina.drawString("Codigo.",20,50+(filas_impresion*10));//100
                        pagina.drawString("Descripcion",80,50+(filas_impresion*10));//cantidad 20
                        pagina.drawString("Precio",200,50+(filas_impresion*10));//100
                        pagina.drawString("PZ.",240,50+(filas_impresion*10));//100
                        
                        pagina.drawString("Observ.",280,50+(filas_impresion*10));//cantidad 20

                        //pagina.drawString("Precio",230,50+(filas_impresion*10));//descuento 20
                        filas_impresion+=2;
                        for(int i=0;i<=35;i++)
                        {
                            pagina.drawString("-",i*10,50+(filas_impresion*10));
                        }
                        filas_impresion+=2;
                    /*Impresion de los productos*/
                        nif=((pag+1)*50);
                        nip=((pag+1)*50)-50;
                        if (nif < nobjetotabla )
                            {
                                nobjetotabla=nif;
                            }
                        System.out.println("revisa :"+nip+"final"+nif+"tabla"+nobjetotabla);
                        for(ni=nip;ni<nobjetotabla;filas_impresion+=1,ni++)
                           {
                                if((this.Objeto_tabla.getValueAt(ni,1)+"").length()>15)
                                    {
                                        s=(this.Objeto_tabla.getValueAt(ni,1)+"").substring(0,15);
                                    }
                                else
                                    {
                                        s=(this.Objeto_tabla.getValueAt(ni,1)+"");
                                    }
                                costopieza=Float.valueOf(this.Objeto_tabla.getValueAt(ni,4).toString())/Float.valueOf(this.Objeto_tabla.getValueAt(ni,9).toString());
                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,0)+""),20,50+(filas_impresion*10));//Codigo
                                pagina.drawString(s,80,50+(filas_impresion*10));//descripcion 140 120 100
                                pagina.drawString((miformat.format(costopieza)),200,50+(filas_impresion*10));//cantidad
                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,9)+""),240,50+(filas_impresion*10));//PZ
                        
                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,10)+""),280,50+(filas_impresion*10));//Codigo
                            }
                        System.out.println("Termine de imprimir los productos opcion 1");
                           filas_impresion++;

                for(indice_arreglo++;indice_arreglo<nobjetocadenas &&
                       !(this.cadenas_a_imprimir.get(indice_arreglo)+"").equals("*")
                    ;filas_impresion++,indice_arreglo++)
                   {
                        pagina.drawString(this.cadenas_a_imprimir.get(indice_arreglo)+"",0,50+(filas_impresion*10));
                   }
               /*mensajes para pedido etc.*/
                 }//fin de imprecion de recepcion ahora sigue bloque para diferencias
                 if (opcion==2)
                 {
                       pagina.drawString("Codigo.",20,50+(filas_impresion*10));//100
                        pagina.drawString("Descripcion",80,50+(filas_impresion*10));//cantidad 20
                        pagina.drawString("Precio",200,50+(filas_impresion*10));//100
                        pagina.drawString("PZ.",240,50+(filas_impresion*10));//100
                      
                        pagina.drawString("Observ.",280,50+(filas_impresion*10));//cantidad 20
                        //pagina.drawString("Precio",230,50+(filas_impresion*10));//descuento 20
                        filas_impresion+=2;
                        for(int i=0;i<=35;i++)
                        {
                            pagina.drawString("-",i*10,50+(filas_impresion*10));
                        }
                        filas_impresion+=2;
                          nif=((pag+1)*50);
                        nip=((pag+1)*50)-50;
                        if (nif < nobjetotabla )
                            {
                                nobjetotabla=nif;
                            }
                        System.out.println("revisa :"+nip+"final"+nif+"tabla"+nobjetotabla);
                        for(ni=nip;ni<nobjetotabla;filas_impresion+=1,ni++)
                           {
                                if((this.Objeto_tabla.getValueAt(ni,1)+"").length()>15)
                                    {
                                        s=(this.Objeto_tabla.getValueAt(ni,1)+"").substring(0,15);
                                    }
                                else
                                    {
                                        s=(this.Objeto_tabla.getValueAt(ni,1)+"");
                                    }
                                costopieza=Float.valueOf(this.Objeto_tabla.getValueAt(ni,7).toString());
                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,0)+""),20,50+(filas_impresion*10));//Codigo
                                pagina.drawString(s,80,50+(filas_impresion*10));//descripcion 140 120 100
                                pagina.drawString((miformat.format(costopieza)),200,50+(filas_impresion*10));//cantidad
                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,6)+""),240,50+(filas_impresion*10));//PZ

                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,9)+""),280,50+(filas_impresion*10));//Codigo
                            }
                        System.out.println("Termine de imprimir los productos opcion 1");
                           filas_impresion++;

                for(indice_arreglo++;indice_arreglo<nobjetocadenas &&
                       !(this.cadenas_a_imprimir.get(indice_arreglo)+"").equals("*")
                    ;filas_impresion++,indice_arreglo++)
                   {
                        pagina.drawString(this.cadenas_a_imprimir.get(indice_arreglo)+"",0,50+(filas_impresion*10));
                   }
                    System.out.println("Termine de imprimir los productos opcion 2");
                 }
                if (opcion==3)
                 {
                        pagina.drawString("cant.",20,50+(filas_impresion*10));//100
                        pagina.drawString("Codigo.",60,50+(filas_impresion*10));//100
                        pagina.drawString("Descripcion.",110,50+(filas_impresion*10));//100
                        pagina.drawString("Patron",200,50+(filas_impresion*10));//cantidad 20
                        pagina.drawString("Anc.tela",240,50+(filas_impresion*10));//cantidad 20
                        pagina.drawString("Anc.Cort",280,50+(filas_impresion*10));//cantidad 20
                        pagina.drawString("Uso Tela",320,50+(filas_impresion*10));//cantidad 20
                        pagina.drawString("Pzs Xlinea",380,50+(filas_impresion*10));//cantidad 20
                        pagina.drawString("Filas",420,50+(filas_impresion*10));//cantidad 20
                        pagina.drawString("Tot Pzas",460,50+(filas_impresion*10));//cantidad 20
                        pagina.drawString("Sob",500,50+(filas_impresion*10));//cantidad 20
                        pagina.drawString("Empaq",540,50+(filas_impresion*10));//cantidad 20
                        pagina.drawString("No Paq",580,50+(filas_impresion*10));//cantidad 20
                        pagina.drawString("Observa",610,50+(filas_impresion*10));//cantidad 20
                        //pagina.drawString("Precio",230,50+(filas_impresion*10));//descuento 20
                        filas_impresion+=2;
                        for(int i=0;i<=150;i++)
                        {
                            pagina.drawString("-",i*10,50+(filas_impresion*10));
                        }
                        filas_impresion+=2;
                          nif=((pag+1)*50);
                        nip=((pag+1)*50)-50;
                        if (nif < nobjetotabla )
                            {
                                nobjetotabla=nif;
                            }
                        System.out.println("revisa :"+nip+"final"+nif+"tabla"+nobjetotabla);
                        for(ni=nip;ni<nobjetotabla;filas_impresion+=1,ni++)
                           {
                                if((this.Objeto_tabla.getValueAt(ni,2)+"").length()>15)
                                    {
                                        s=(this.Objeto_tabla.getValueAt(ni,2)+"").substring(0,15);
                                    }
                                else
                                    {
                                        s=(this.Objeto_tabla.getValueAt(ni,2)+"");
                                    }
                                
                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,0)+""),20,50+(filas_impresion*10));//PZ
                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,1)+""),60,50+(filas_impresion*10));//PZ
                                pagina.drawString(s,110,50+(filas_impresion*10));//descripcion 140 120 100
                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,3)+"X"+this.Objeto_tabla.getValueAt(ni,4)),200,50+(filas_impresion*10));//Codigo
                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,5)+""),240,50+(filas_impresion*10));//PZ
                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,6)+""),280,50+(filas_impresion*10));//PZ
                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,7)+""),320,50+(filas_impresion*10));//PZ
                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,8)+""),380,50+(filas_impresion*10));//PZ
                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,9)+""),420,50+(filas_impresion*10));//PZ
                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,10)+""),460,50+(filas_impresion*10));//PZ
                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,11)+""),500,50+(filas_impresion*10));//PZ
                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,12)+""),540,50+(filas_impresion*10));//PZ
                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,13)+""),580,50+(filas_impresion*10));//PZ
                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,14)+""),610,50+(filas_impresion*10));//PZ

                            }
                        System.out.println("Termine de imprimir los productos opcion 1");
                           filas_impresion++;

                for(indice_arreglo++;indice_arreglo<nobjetocadenas &&
                       !(this.cadenas_a_imprimir.get(indice_arreglo)+"").equals("*")
                    ;filas_impresion++,indice_arreglo++)
                   {
                        pagina.drawString(this.cadenas_a_imprimir.get(indice_arreglo)+"",0,50+(filas_impresion*10));
                   }
                    System.out.println("Termine de imprimir los productos opcion 2");
                 }
                if (opcion==4)
                 {
                        pagina.drawString("Fac.",0,50+(filas_impresion*10));//100
                        pagina.drawString("Abono",25,50+(filas_impresion*10));//cantidad 20
                        pagina.drawString("Consignado",80,50+(filas_impresion*10));//precio u 50
                         filas_impresion+=2;
                        for(int i=0;i<=35;i++)
                        {
                            pagina.drawString("-",i*10,50+(filas_impresion*10));
                        }
                        filas_impresion+=2;
                    /*Impresion de los productos*/
                        for(ni=0;ni<nobjetotabla;filas_impresion+=1,ni++)
                        {

                                if((this.Objeto_tabla.getValueAt(ni,0)+"").length()>20)
                                    {
                                       s=(this.Objeto_tabla.getValueAt(ni,0)+"").substring(0,20);
                                    }
                                else
                                    {
                                       s=(this.Objeto_tabla.getValueAt(ni,0)+"");
                                    }
                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,1)+""),0,50+((filas_impresion)*10));//cantidad
                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,2)+""),25,50+((filas_impresion)*10));//codigo
                                pagina.drawString(s,80,50+((filas_impresion)*10));//descripcion 140 120 100

                                //System.out.println("Imprimiendo :"+s);


                        }
                        filas_impresion+=1;
                        pagina.drawString("Entrego: ______________",0,50+(filas_impresion)*10);//100
                        filas_impresion+=1;
                        pagina.drawString("Recibio: ______________",0,50+(filas_impresion)*10);//100
                        filas_impresion+=1;
                        pagina.drawString(".",0,50+((filas_impresion)*10));//100
                        filas_impresion+=1;
                        pagina.drawString(".",0,50+((filas_impresion)*10));//100
                        filas_impresion+=1;
                        pagina.drawString(".",0,50+(filas_impresion)*10);//100
                        System.out.println("Termine de imprimir los productos");
                 }
                if (opcion==5)
                 {
                        pagina.drawString("cant.",15,50+(filas_impresion*10));//100
                        pagina.drawString("Paq",50,50+(filas_impresion*10));//cantidad 20
                        pagina.drawString("PzXpk",80,50+(filas_impresion*10));//cantidad 20
                        pagina.drawString("Codigo.",110,50+(filas_impresion*10));//100
                        pagina.drawString("Descripcion.",185,50+(filas_impresion*10));//100
                        pagina.drawString("Patron",440,50+(filas_impresion*10));//cantidad 20
                        pagina.drawString("Plan",480,50+(filas_impresion*10));//cantidad 20
                        pagina.drawString("A.tela",520,50+(filas_impresion*10));//cantidad 20
                        pagina.drawString("Uso Tela",550,50+(filas_impresion*10));//cantidad 20
                        pagina.drawString("Pz Sob",600,50+(filas_impresion*10));//cantidad 20
                        
                       
                        pagina.drawString("Observa",630,50+(filas_impresion*10));//cantidad 20
                        //pagina.drawString("Precio",230,50+(filas_impresion*10));//descuento 20
                        filas_impresion+=2;
                        for(int i=0;i<=150;i++){
                            pagina.drawString("-",i*10,50+(filas_impresion*10));
                        }
                        filas_impresion+=2;
                          nif=((pag+1)*35);
                        nip=((pag+1)*35)-35;
                        if (nif < nobjetotabla ){
                                nobjetotabla=nif;
                            }
                        for(ni=nip;ni<nobjetotabla;filas_impresion+=1,ni++){
                                if((this.Objeto_tabla.getValueAt(ni,2)+"").length()>45){
                                        s=(this.Objeto_tabla.getValueAt(ni,2)+"").substring(0,45);
                                    }
                                else{
                                        s=(this.Objeto_tabla.getValueAt(ni,2)+"");
                                    }
                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,0)+""),15,50+(filas_impresion*10));//PZ
                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,13)+""),50,50+(filas_impresion*10));//PZ
                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,12)+""),80,50+(filas_impresion*10));//PZ
                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,1)+""),110,50+(filas_impresion*10));//PZ
                                pagina.drawString(s,185,50+(filas_impresion*10));//descripcion 140 120 100
                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,3)+"X"+this.Objeto_tabla.getValueAt(ni,4)),440,50+(filas_impresion*10));//Codigo
                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,8)+"X"+this.Objeto_tabla.getValueAt(ni,9)),480,50+(filas_impresion*10));//PZ
                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,5)+""),520,50+(filas_impresion*10));//PZ
                                
                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,7)+""),550,50+(filas_impresion*10));//PZ
                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,11)+""),600,50+(filas_impresion*10));//PZ
                                
                                
                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,14)+""),630,50+(filas_impresion*10));//PZ

                            }
                        System.out.println("Termine de imprimir los productos opcion 1");
                           filas_impresion++;

                for(indice_arreglo++;indice_arreglo<nobjetocadenas &&
                       !(this.cadenas_a_imprimir.get(indice_arreglo)+"").equals("*")
                    ;filas_impresion++,indice_arreglo++)
                   {
                        pagina.drawString(this.cadenas_a_imprimir.get(indice_arreglo)+"",0,50+(filas_impresion*10));
                   }
                    System.out.println("Termine de imprimir los productos opcion 2");
                 }

            }
            pagina.dispose();
            pagina.finalize();
			pj.end();
		}catch(Exception e)
		{
			System.out.println("LA IMPRESION HA SIDO CANCELADA..."+e.getMessage());
		}
	}//FIN DEL PROCEDIMIENTO imprimir(String)

    public void setOneItem_cadenas_a_imprimir(String s)
    {
        this.cadenas_a_imprimir.addElement(s);
    }
    /**
     * @return the Objeto_textarea
     */
    public JTextArea getObjeto_textarea() {
        return Objeto_textarea;
    }

    /**
     * @param Objeto_textarea the Objeto_textarea to set
     */
    public void setObjeto_textarea(JTextArea Objeto_textarea) {
        this.Objeto_textarea = Objeto_textarea;
    }

    /**
     * @return the Objeto_tabla
     */
    public JTable getObjeto_tabla() {
        return Objeto_tabla;
    }

    /**
     * @param Objeto_tabla the Objeto_tabla to set
     */
    public void setObjeto_tabla(JTable Objeto_tabla) {
        this.Objeto_tabla = Objeto_tabla;
    }




}
